package Problem6;

/**
 * 这道题先创建 行数 numRows 个字符串
 * 然后便利字符串，先向下，后向上 （如同字母 W 的外形）将结果添加到每一列对应的字符串中
 * 最后将们行的字符串按顺序连接，输出
 *
 * 使用StringBuffer提高运行速度
 */

class Solution {

    public String convert(String s, int numRows) {
        int i = 0;
        // 创建numRows个字符串
        StringBuffer [] str = new StringBuffer[numRows];
        while (i < str.length) str[i++] = new StringBuffer();
        // 按z形顺序给对应每行的str添加数据
        for (i = 0 ; i < s.length();){
            for (int x = 0 ; x < numRows && i < s.length(); x++, i++){
                str[x].append(s.charAt(i));
            }
            for (int x = numRows-2 ; x>= 1 && i < s.length(); x--, i++){
                str[x].append(s.charAt(i));
            }
        }
        // 合并后输出
        for (i = 1 ; i < numRows ; i++) str[0].append(str[i]);
        return str[0].toString();
    }
}